package dao;

import java.util.Collection;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;

import dominio.Jogador;
import dominio.Noticia;
import dominio.Usuario;

public class JogadorDao extends GenericDaoImpl {

	public Jogador getJogadorByUsuario(Usuario usuario) throws DaoException {
		
		String hql = "from Jogador where usuario.id = ?";

		Query q = getSession().createQuery(hql);

		q.setParameter(0, usuario.getId());

		@SuppressWarnings("unchecked")
		List<Jogador> list = q.list();

		if (list.isEmpty()) {
			return null;
		} else {
			return list.get(0);
		}
	}
	
	public Collection<Noticia> findNoticiasByJogador(int idUsuario) throws HibernateException, DaoException {
		String hql = "from Noticia where usuario.id = ?";

		Query q = getSession().createQuery(hql);

		q.setParameter(0, idUsuario);

		@SuppressWarnings("unchecked")
		List<Noticia> list = q.list();
		
		return list;
	}

	public Collection<Jogador> findJogadoresByClubeAndPosicoes(int idClube, Integer[] posicoes, int limit) throws DaoException {
		String hql = "from Jogador where 1=1 and clube.id = :idClube and posicao in :posicoes";

		Query q = getSession().createQuery(hql);

		q.setParameter("idClube", idClube);
		q.setParameterList("posicoes", posicoes);

		@SuppressWarnings("unchecked")
		List<Jogador> list = q.setMaxResults(limit).list();

		return list;
	}

}
